package Controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Vector;

import javax.swing.JOptionPane;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;

import Modelo.Cooperativa;
import Modelo.Empleado;
import Modelo.Socio;
import Modelo.Terminal;
import Vista.VEmpleado;
@SuppressWarnings("all")
public class CEmpleado implements ActionListener {
	
			private final static String[] TIPOS = {"Presidente", "Vice-Presidente", "Secretaria", "Tesorero", "Chofer"};
			private VEmpleado ve;
			private Empleado empleado;
			private Cooperativa co;
			private Terminal ter;
			private int varBusqueda;
			private CCooperativa controladorcooperativa;
			
			
  public CEmpleado(Cooperativa co, Terminal ter, CCooperativa controladorcooperativa){
	  
	  //Constructor de la clase
	  super();
	  this.ter = ter;
	  this.co = co;
	  this.ve = new VEmpleado(this);
	  this.ve.setVisible(true);
	  this.empleado = new Empleado();
	  this.controladorcooperativa = controladorcooperativa;
	  ve.getTxtCooperativa().setEnabled(false);
	  DefinirCooperativa();
	  cargarEmpleados();



  }
			



//Metodos Para accionar los botones
@Override
public void actionPerformed(ActionEvent e) {
    if(e.getActionCommand().toLowerCase().equals("modificar"))
    {
  	  		Modificar();
    }
    else if(e.getActionCommand().toLowerCase().equals("guardar"))
    {
  	  		Guardar();
    }else if(e.getActionCommand().toLowerCase().equals("limpiar"))
    {
  	  Limpiar();
    }else if(e.getActionCommand().toLowerCase().equals("eliminar"))
    {
  	  Eliminar();
    }
    else if(e.getActionCommand().toLowerCase().equals("buscar")){
  	  Buscar();
    }
}


public void DefinirCooperativa(){
	
			
			ve.getTxtCooperativa().setText(co.getDescripcion().toString());
	
}


private void Modificar() {
	// TODO Auto-generated method stub
	
}




private void Buscar() {
	
	co = ter.buscarCooperativaNombre(ve.getTxtCooperativa().getText());
	
	
	if((ve.gettxt_Cedula().equals(""))){
		ve.mostrarMensaje("Debe llenar el campo cedula para poder buscar");		
	}else if(ve.gettxt_Cedula().toString() != "")
	{
		String codigo = ve.gettxt_Cedula().getText().toString();
			
			if(co.buscarEmpleado(codigo) == null){
				ve.mostrarMensajeError("La cedula " + codigo + " no existe");
			}else{
			
			Empleado empleadobuscado = co.buscarEmpleado(codigo);
			
			
				
				
					ve.gettxt_Nombre().setEnabled(false);
					ve.gettxt_Telefono().setEnabled(false);
					ve.gettxt_Cedula().setEnabled(false);
					ve.getCmbTipo().setEnabled(false);
					
					
					
					ve.getTxtCooperativa().setText(co.getDescripcion());
					ve.gettxt_Nombre().setText(empleadobuscado.getNombre().toString());
					ve.gettxt_Telefono().setText(empleadobuscado.getTelefono().toString());
					
					String[] tipo = {empleadobuscado.getTipo().toString()};
					ComboBoxModel cmbTipoSolo = new DefaultComboBoxModel(tipo);
					ve.getCmbTipo().removeAllItems();
					ve.getCmbTipo().setModel(cmbTipoSolo);
					
					ve.getBtnguardar().setEnabled(false);
					ve.getBtnbuscar().setEnabled(false);
					varBusqueda = 1;
			}
				
			}
		
			
		
	
	
}




private void Eliminar() {
	// TODO Auto-generated method stub
	
}




private void Limpiar() {
			
			
	
	//pone los campos de texto en blanco
			ve.gettxt_Telefono().setText("");
			ve.gettxt_Cedula().setText("");
			ve.gettxt_Nombre().setText("");

			
			
			//habilita todos los botones
			ve.getBtnbuscar().setEnabled(true);
			ve.getBtneliminar().setEnabled(true);
			ve.getBtnmodificar().setEnabled(true);
			ve.getBtnguardar().setEnabled(true);
			
			
			//habilita todos los campos de texto
			
			ve.gettxt_Cedula().setEnabled(true);
			ve.gettxt_Nombre().setEnabled(true);
			ve.gettxt_Telefono().setEnabled(true);
			ve.getCmbTipo().setEnabled(true);
			varBusqueda = 0;
			
			
			ComboBoxModel tipos = new DefaultComboBoxModel(TIPOS);
			ve.getCmbTipo().setModel(tipos);
	
}




public void Guardar(){
	
	
	
	if(validarDatos()){	
		
		int nroempleados = co.contarEmpleados();
		
					Empleado em = new Empleado();
					em.setCedula(ve.gettxt_Cedula().getText().toString());
					em.setNombre(ve.gettxt_Nombre().getText().toString());
					em.setCooperativaPertenece(ter.buscarCooperativaNombre(ve.getTxtCooperativa().getText().toString()).getCodigo());
					em.setTipo(ve.getCmbTipo().getSelectedItem().toString());
					em.setTelefono(ve.gettxt_Telefono().getText().toString());
					co.agregarEmpleado(em);
					JOptionPane.showMessageDialog(null, "Registro de empleado Exitoso" , "Guardar empleado"  , 1);
					ve.gettxt_Telefono().setText("");
					ve.gettxt_Cedula().setText("");
					ve.gettxt_Nombre().setText("");
					
					ve.limpiarTabla();
					llenarTabla();
					
				
	}
}

public void GuardarArchivoEmpleado(String nombre, String telefono, String cedula, String cooperativa, String tipo){
	
		Empleado em = new Empleado();
		em.setNombre(nombre);
		em.setTelefono(telefono);
		em.setCedula(cedula);
		em.setCooperativaPertenece(cooperativa);
		em.setTipo(tipo);
	
		co.agregarEmpleado(em);
	
}





private boolean validarDatos() {
	if(ve.gettxt_Cedula().getText().toString().equalsIgnoreCase("")){
		ve.mostrarMensaje("Debe ingresar una cedula de empleado");
		return false;
	}else if (ve.gettxt_Nombre().getText().toString().equalsIgnoreCase("")){
		ve.mostrarMensaje("Debe ingresar un nombre de empleado");
		return false;
	}else if(ve.gettxt_Telefono().getText().toString().equalsIgnoreCase("")){
		ve.mostrarMensaje("Debe ingresar un telefono de empleado");
		return false;
	}else if(ve.getTxtCooperativa().getText().toString().equalsIgnoreCase("")){
		ve.mostrarMensaje("Debe ingresar una cooperativa de empleado");
		return false;
	}else if (co.buscarEmpleado(ve.gettxt_Cedula().getText()) != null){
		ve.mostrarMensaje("Ya el empleado con cedula " + ve.gettxt_Cedula().getText() + " existe " );
		Limpiar();
		return false;
	}
	
	return true;
}

public void cargarEmpleados() {
	try {
		FileReader fileReader = new FileReader("archivos/Empleados.txt");
		BufferedReader bufferedReader = new BufferedReader(fileReader);
		String linea = bufferedReader.readLine();
		while (linea != null) {
			String nombre = linea;
			String telefono = bufferedReader.readLine();
			String cedula = bufferedReader.readLine();
			String tipo = bufferedReader.readLine();
			String cooperativa = bufferedReader.readLine();

			empleado = new Empleado(nombre, telefono, cedula, tipo, cooperativa);
			co.agregarEmpleado(empleado);
		}
	} catch (Exception ex) {

	}
}

public void llenarTabla() {
	

	

	for (int k = 0; k < co.contarEmpleados(); k++) {
			
			if(co.getEmpleados().get(k).getCooperativaPertenece().equals(co.getCodigo())){
				
			
				Vector<String> datos = new Vector<String>(2, 1);
				
				
				String cedula = co.obtenerEmpleado(k).getCedula();
				String empleado = co.obtenerEmpleado(k).getNombre();
				datos.add(cedula);
				datos.add(empleado);
				ve.agregarFilaTblEmpleados(datos);
			}
			
	}
}


	
}